/**
 * @description:混入对象
 */
import tableApi from "@/api/basic-info-manage/table-config";
import { cloneDeep } from "lodash";

export const mymixin = {
  data() {
    return {
      dialogTableColumnVisible: false,
      columnList: [],
      allTableColumn: [],
      formDataList: [],
      // tableUpStauts: 1,
      searchObj: {}
    }
  },
  created() {
  },
  watch: {
  },
  computed: {
  },
  methods: {

    // 列配置
    showColumn() {
      this.dialogTableColumnVisible = true;
    },

    cancelColumn(reload) {
      console.log("cancelColumn", reload);
      this.dialogTableColumnVisible = false
      reload && this.loadSaveColumn()
    },


    //用于自定义表头修改之后的查询设置
    loadSaveColumn() {
      var key = ''
      if (this.tableColumnSum && this.loadSaveColumnWhenTableChange)
        key = '_' + this.tableColumnSum
      const url = this.$route.path + key

      console.log("mix loadAllTableColums ", this.allTableColumn);
      // this.tableColumnsData = []
      console.time('timer')
      tableApi.queryByUrlAndAccountAndOrganizationNo(url).then(res => {
        console.timeEnd('timer')
        this.tableColumnsData = []
        const fieldContentStr = res.data?.fieldContentStr;
        const fieldContent = fieldContentStr && JSON.parse(fieldContentStr);
        let tableColumn = []
        if (Array.isArray(fieldContent) && fieldContent.length > 0) {
          //// 防止重复新增字段
          fieldContent.forEach(el => {
            let item = this.allTableColumn.find(ele => {
              return ele.label === el.label
            })
            if (el.show && item) {
              if (item.typeObj) {
                el.typeObj = item.typeObj
              }
              tableColumn.push(el)
            }
          })
          // this.tableColumnsData = [];
          if (tableColumn.length > 0) {
            //tableColumnsData中表头顺序改变时，直接赋值页面不会刷新
            this.$nextTick(() => {
              this.tableColumnsData = cloneDeep(tableColumn)
              // console.log("mix loadTableColumns tableColumnsData", cloneDeep(tableColumn));
            })
          }
        }
        if (this.tableColumnsData.length === 0) {
          this.tableColumnsData = cloneDeep(this.allTableColumn)
          // console.log("mix loadTableColumns 3");
        }
      })
    },
    // 表格筛选
    tableUpdate(data, name) {
      // let flag = true;
      // 筛选条件如果已经存在，就更新,注意判别传递过来的数据类型
      if (data.type === "Reset") {
        console.log(data.param, this.searchObj);
        for (let key in this.searchObj) {
          if (key === data.param || key === data.selectValue || key === data.porpName) {
            this.$set(this.searchObj, key, undefined);
          }
        }
      } else if (
        data.value !== "" &&
        data.type !== "Reset" &&
        data.type !== "wholeReset"
      ) {
        if (data.selectValue) {
          this.searchObj[data.selectValue] = data?.value;
        } else {
          this.searchObj[data.param] = data?.value;
        }
        // 如果为耳标或者电子耳标需要，通过data.value获取编号，在返回数据中获取
      } else if (data.type === "wholeReset") {
        this.tableUpStauts = 3;
        for (let key in this.searchObj) {
          this.$set(this.searchObj, key, undefined);
          // }
        }
        setTimeout(() => {
          this.tableUpStauts = 1;
        }, 200);
      }
      this.tableUpdatePlus(data, name)
      // this.search();
    },
    // 表格筛选特化处理
    tableUpdatePlus(data, name) {
      console.log(data, name);
    },
    // 时间戳格式化
    formatDateTime(val) {
      var time = new Date(val);
      var year = time.getFullYear(); // 取得4位数的年份
      var month = time.getMonth() + 1; // 取得日期中的月份，其中0表示1月，11表示12月
      var date = time.getDate(); // 返回日期月份中的天数（1到31）
      // var hour = time.getHours(); // 返回日期中的小时数（0到23）
      // var minute = time.getMinutes(); // 返回日期中的分钟数（0到59）
      // var second = time.getSeconds(); // 返回日期中的秒数（0到59）
      return year + "年" + month + "月" + date + "日";
      // return year + "年" + month + "月" + date + " " + hour + ":" + minute + ":" + second;
    },
    // 时间戳格式化
    formatDateTime_(val) {
      var time = new Date(val);
      var year = time.getFullYear(); // 取得4位数的年份
      var month = time.getMonth() + 1; // 取得日期中的月份，其中0表示1月，11表示12月
      month = month < 10 ? ('0' + month) : month;
      var date = time.getDate(); // 返回日期月份中的天数（1到31）
      date = date < 10 ? ('0' + date) : date;
      // var hour = time.getHours(); // 返回日期中的小时数（0到23）
      // var minute = time.getMinutes(); // 返回日期中的分钟数（0到59）
      // var second = time.getSeconds(); // 返回日期中的秒数（0到59）
      return year + "-" + month + "-" + date;
      // return year + "年" + month + "月" + date + " " + hour + ":" + minute + ":" + second;
    },
    formatDateTimeMHS(val) {
      if (val) {
        var time = new Date(val);
        var year = time.getFullYear(); // 取得4位数的年份
        var month = time.getMonth() + 1; // 取得日期中的月份，其中0表示1月，11表示12月
        month = month < 10 ? ('0' + month) : month;
        var date = time.getDate(); // 返回日期月份中的天数（1到31）
        date = date < 10 ? ('0' + date) : date;
        var hour = time.getHours(); // 返回日期中的小时数（0到23）
        hour = hour < 10 ? ('0' + hour) : hour;
        var minute = time.getMinutes(); // 返回日期中的分钟数（0到59）
        minute = minute < 10 ? ('0' + minute) : minute;
        var second = time.getSeconds(); // 返回日期中的秒数（0到59）
        second = second < 10 ? ('0' + second) : second;
        return year + "-" + month + "-" + date + ' ' + hour + ':' + minute + ':' + second;
        // return year + "年" + month + "月" + date + " " + hour + ":" + minute + ":" + second;}
      }
    },
    listfor({
      formDataList = 'formDataList'
   /* 需要插入的数组 为Array进行循环 */,
      param = ''
   /* 需要插入的值 为Array进行循环 */,
      list = []
   /* 需要插入的数数据 */,
      listName = ["name", "value"]
      /* 字段名 */
    }) {
      // console.time('small loop');
      const _this = this
      // 非单个数据
      // console.log(this[formDataList]);

      if (typeof formDataList !== "string") {
        formDataList.forEach((listitem) => {
          // 文本过滤（不知道有用没）
          let livelist = JSON.parse(JSON.stringify(_this[listitem]))
          livelist.forEach((item, index) => {
            if (typeof param !== "string") {
              param.forEach((porpitem, porpindex) => {
                if (item.param === porpitem) {
                  _this.$set(_this[listitem][index], "typeObj", {
                    list: list[porpindex],
                    listName: listName
                  });
                }
              })
            } else {
              if (item.param === param) {
                _this.$set(_this[listitem][index], "typeObj", {
                  list: list,
                  listName: listName
                });
              }
            }
          });
        })
      } else {
        _this[formDataList].forEach((item, index) => {
          if (item.param === param) {
            _this.$set(_this[formDataList][index], "typeObj", {
              list: list,
              listName: listName
            });
          }
        });
      }
      // console.timeEnd('small loop');
    },
    // 获取日期函数
    getdateBetween(startDate, day) {
      if (!startDate || !day) return '无数据';
      const sDate = Date.parse(startDate);
      const time = sDate + (day * 24 * 60 * 60 * 1000);
      return this.dateToFormattwo(time, 'date');
    },
    // 获取天数函数
    getDaysBetween(startDate, enDate, st = true) {
      if (!startDate || !enDate) return 0;
      const sDate = Date.parse(startDate);
      const eDate = Date.parse(enDate);
      console.log(sDate, eDate)
      if (st) {
        if (sDate > eDate) {
          return 0;
        }
        if (sDate === eDate) {
          return 0;
        }
        const days = (eDate - sDate) / (1 * 24 * 60 * 60 * 1000);
        return days;
      } else {
        if (sDate > eDate) {
          return 1;
        }
        if (sDate === eDate) {
          return 1;
        }
        if (sDate < eDate) {
          return 0;
        }
      }
    },
    // 循环过滤树形数组
    filterTreeKey(arr) {
      let newArr = []
      newArr = arr?.map(item => {
        if (item.child.length > 0) {
          item = {
            ...item,
            child: this.filterTreeKey(
              item.child
            )
          }
        } else {
          delete item.child
        }
        return item
      })
      newArr = newArr?.filter(item => item != null)
      return newArr
    },
  }
}
